<?php

class MenuModule extends CWebModule
{
    protected static  $type_frontend = 1;
    protected static  $type_backend = 2;
    protected static  $status = 1;
	public function init()
	{
		// this method is called when the module is being created
		// you may place code here to customize the module or the application

		// import the module-level models and components
		$this->setImport(array(
			'application.modules.menu.models.*',
			'application.modules.menu.components.*',
		));

      //  $this->setParams(array(

       // ));
	}

    public function install()
    {
        Yii::app()->config->add(array(
            array(
                'param'=>'BLOG.POSTS_PER_PAGE',
                'label'=>'Записей на странице',
                'value'=>'10',
                'type'=>'string',
                'default'=>'10',
            ),
            array(
                'param'=>'BLOG.POSTS_PER_HOME',
                'label'=>'Записей на главной странице',
                'value'=>'5',
                'type'=>'string',
                'default'=>'5',
            ),
        ));

        $path = Yii::getPathOfAlias('webroot.upload.blog');

        if (!is_dir($path))
            @mkdir($path, 755);
    }

    public function uninstall()
    {
        Yii::app()->config->delete(array(
            'BLOG.POSTS_PER_PAGE',
            'BLOG.POSTS_PER_HOME',
        ));
    }

    /**
     * Данный метод генерирует меню сайта(frontend) из БД
     * Из таблиц tbl_menu, tbl_submenu
     * @return array
     */
    public function getFrontendPages()
    {
        $sql = "SELECT id,title,type,link_path,params FROM {{menu_item}} WHERE status=:status ORDER BY position ASC";
        $data = Yii::app()->db->createCommand($sql);
        $data->bindParam(':status',self::$status,PDO::PARAM_INT);
        $pages = $data->query()->readAll();
        $item = array();
        if(count($pages))
        {
            foreach($pages as $page)
            {
                $item[] = array('label'=>Yii::t('MenuModule.base',$page['title']),'url'=>Yii::app()->createUrl('/menu/'.$page['link_path']),array());
            }
        }
        else
        {
            $item[] = array('label'=>Yii::t('MenuModule.base','Home'),'url'=>array('site/index'));
        }
        return  $item;
    }

    /**
     * Боковое меню админки
     * @return array
     */
    public function getBackendPages()
    {
    $item = array();
    $modules = Yii::app()->getModules();
        if(count($modules))
        {
            foreach($modules as $module=>$options)
            {
               if($module == 'gii')
               {
                   break;
               }
                    $item[] = array('label'=>Yii::t($module.'Module.base',$module),'url'=>array($module.'/'.$module.'/'.$module.'/'.$module));
            return $item;
            }
        }
    }
	public function beforeControllerAction($controller, $action)
	{
		if(parent::beforeControllerAction($controller, $action))
		{
			// this method is called before any module controller action is performed
            //Устанавливаем базовые пути для всех модулей
            $modules = Yii::app()->getModules();
            if(count($modules))
            {
                foreach($modules as $module=>$options)
                {
                    if($module != 'gii')
                    {
                        Yii::app()->getModule($module)->basePath = Yii::getPathOfAlias('application.modules.'.$module);//Определяем базовый путь модуля, для предотвращения ошибок Yii::t()
                    }
                }
            }
            return true;
		}
		else
			return false;
	}
}
